﻿using System.Collections.ObjectModel;
using System.ServiceModel;
using Conducido.BizTalkOppSvc.Services.Contracts.BtsTypes;
using WCFExtras.Wsdl.Documentation;

namespace Conducido.BizTalkOppSvc.Services.Contracts
{
    /// <summary>
    /// BizTalk operation service contract
    /// </summary>
    [ServiceContract(Namespace = "http://schemas.conducido.nl/BizTalkOpSuite/BtsOperationInfo/2012/01")]
    [XmlComments]
    public interface IBtsOperationInfo
    {
        /// <summary>
        /// Retrieves application status
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        [OperationContract]
        BtSysStatus ApplicationStatus(string name);

        /// <summary>
        ///Gets all the applications
        /// </summary>
        /// <returns></returns>
        [OperationContract]
        Collection<BtApplication> Applications();

        /// <summary>
        /// Retrieves al receivelocations for a certain BizTalk Applicatoin
        /// </summary>
        /// <param name="application"></param>
        /// <returns>Return a collection of <see cref="BtReceiveLocation"/></returns>
        [OperationContract]
        Collection<BtReceiveLocation> RetrieveAllReceivelocations(string application);

        [OperationContract]
        Collection<BtServiceInstance> RetrieveServiceInstances();

        [OperationContract]
        Collection<BtSendPort> RetrieveAllSendPorts(string application);
    }
}
